// 菜单控制层
// @author likai

package controller

import (
	"admin-go-api/api/entity"
	"admin-go-api/api/service"
	"fmt"
	"github.com/gin-gonic/gin"
	"strconv"
)

var sysMenu entity.SysMenu

// QuerySysMenuVoList 查询新增选项列表
// @Summary 查询新增选项列表
// @Description 查询新增选项列表
// @Produce json
// @tags menu
// @Success 200 {object} result.Result
// @Router /api/menu/vo/list [get]
// @Security ApiKeyAuth
func QuerySysMenuVoList(c *gin.Context) {
	service.SysMenuService().QuerySysMenuVoList(c)
}

// CreateSysMenu 新增菜单
// @Summary 新增菜单
// @Description 新增菜单
// @Produce json
// @tags menu
// @Param data body entity.SysMenu true "data"
// @Success 200 {object} result.Result
// @Router /api/menu/add [post]
// @Security ApiKeyAuth
func CreateSysMenu(c *gin.Context) {
	_ = c.BindJSON(&sysMenu)
	service.SysMenuService().CreateSysMenu(c, sysMenu)
}

// GetSysMenu 获取详情
// @Summary 获取详情
// @Description 获取详情
// @Produce json
// @tags menu
// @Param id query int true "ID"
// @Success 200 {object} result.Result
// @Router /api/menu/info [get]
// @Security ApiKeyAuth
func GetSysMenu(c *gin.Context) {
	id, _ := strconv.Atoi(c.Query("id"))
	service.SysMenuService().GetSysMenu(c, id)
}

// UpdateSysMenu 修改菜单
// @Summary 修改菜单
// @Description 修改菜单
// @Produce json
// @tags menu
// @Param data body entity.SysMenu true "data"
// @Success 200 {object} result.Result
// @Router /api/menu/update [post]
// @Security ApiKeyAuth
func UpdateSysMenu(c *gin.Context) {
	_ = c.BindJSON(&sysMenu)
	service.SysMenuService().UpdateSysMenu(c, sysMenu)
}

// DeleteSysMenu 删除菜单
// @Summary 删除菜单
// @Description 删除菜单
// @Produce json
// @tags menu
// @Param data body entity.SysMenuIdDto true "data"
// @Success 200 {object} result.Result
// @Router /api/menu/delete [delete]
// @Security ApiKeyAuth
func DeleteSysMenu(c *gin.Context) {
	var dto entity.SysMenuIdDto
	_ = c.BindJSON(&dto)
	service.SysMenuService().DeleteSysMenu(c, dto)
}

// GetSysMenuList 查询菜单列表
// @Summary 查询菜单列表
// @Description 查询菜单列表
// @Produce json
// @tags menu
// @Param menuName query string false "菜单名称"
// @Param menuStatus query string false "菜单状态"
// @Success 200 {object} result.Result
// @Router /api/menu/list [get]
// @Security ApiKeyAuth
func GetSysMenuList(c *gin.Context) {
	MenuName := c.Query("menuName")
	MenuStatus := c.Query("menuStatus")
	fmt.Println("控制层-----------------------")
	service.SysMenuService().GetSysMenuList(c, MenuName, MenuStatus)
}
